const { app, BrowserWindow,Tray ,ipcMain} = require('electron') 
const electron = require('electron')
const Menu = electron.Menu
// const Menu = app.Menu
const path = require('path');
// 托盘对象
let appTray = null;
let win =null;
const windowOptions = {
  title: '橙子云盘',
  // titleBarStyle: 'hidden',
  width: 1540,
  height: 1000,
  titleBarStyle: 'hidden',
  frame: true,
  closable:true,
 // transparent: true, 
 skipTaskbar: true, //是否隐藏任务栏中的应用图标
  webPreferences: {
    devTools: false, //可禁用devTools:false,
    nodeIntegration: true,
    contextIsolation: true, //上下文隔离
    
    //preload: path.join(__dirname, './utils/preload.js'), // webview中预加载的js
  },
  // frame: false, //无边框窗口
};

function createWindow () {   
  // 创建浏览器窗口
   Menu.setApplicationMenu(null);
   win = new BrowserWindow(windowOptions) 
   //win.setApplicationMenu(null)

   if (process.platform != 'darwin') {
      // app.dock.hide();
   }

   win.maximize();   

  // 打开开发者工具
  // win.webContents.openDevTools()

   ipcMain.on('min', e => win.minimize()) //监听自定义的最小化方法
    // 系统托盘右键菜单
  var trayMenuTemplate = [
    // {
    //   'label': '设置',
    //   click: function () { }
    // },
    // {
    //   'label': '帮助',
    //   click: function () { }
    // },
    {
      'label': '退出',
      click: function () { win.destroy() } //关闭客户端
    }
  ]


   //系统托盘图标目录
 // appTray = new Tray(path.join(__dirname, './public/logo.ico')) // 引入托盘中的小图标本地测试相对路径
   appTray = new Tray(path.join(__dirname, '/public/logo.ico')) // 打包使用绝对路径
  //图标的上下文菜单
  const contextMenu = Menu.buildFromTemplate(trayMenuTemplate); 
  appTray.setContextMenu(contextMenu);
  appTray.setToolTip('橙子云盘')
  // 点击托盘中的图标显示客户端
  appTray.on('click', function () {
      win.isVisible() ? win.hide() : win.show()
      win.isVisible() ?win.setSkipTaskbar(false):win.setSkipTaskbar(true);
  })
  
   win.loadURL('http://baidu.com'); 

  win.on('closed', (event) => {
      win = null
  })

  win.on('close', (event) => { 
      win.hide(); 
      win.setSkipTaskbar(true);
      event.preventDefault();
  });
 
} 

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(createWindow)

//获取单例运行锁，获取成功则说明可以启动
const shouldRun = app.requestSingleInstanceLock() 
if (!shouldRun) {
  app.quit()
}

//将当前运行的程序调到前台
app.on('second-instance', (event, commandLine, workingDirectory) => {
        if (win) {
          if (win.isMinimized()){
             win.restore()
             win.focus()
          }
 
          if (!win.isVisible()){
            win.show()
            win.setSkipTaskbar(true);
          }   
       }    
}) 

// Quit when all windows are closed.
app.on('window-all-closed', (event) => {
  // 在 macOS 上，除非用户用 Cmd + Q 确定地退出，
  // 否则绝大部分应用及其菜单栏会保持激活。
  if (process.platform != 'darwin') {
    event.preventDefault()
    app.quit()
  }
})

app.on('activate', () => {
  // 在macOS上，当单击dock图标并且没有其他窗口打开时，
  // 通常在应用程序中重新创建一个窗口。
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
  }
})

 
